近期、苦力怕フォーラムのサーバープラグインセクションのグループ(グループ番号 332359582)で最も頻繁に尋ねられる質問は、「どのサーバーコアを選べばいいですか?Folia は使えますか?Oracle を使うべきですか?Zulu を使うべきですか?パフォーマンスレポートの分析には Spark を使うべきですか?Timing を使うべきですか?」など、実際には重要ではない質問です。
これらの質問を見た後、私は 1 つの問題に気づきました。私のワールドの開設コストが徐々に低下するにつれて、ますます多くの初心者がサーバーを開設しようとしています。彼らはサーバーをより良くしたいと考えていますが、そのためには間違ったことに焦点を当てています。本当のサーバーオーナーは、コンテンツ、バランス、コミュニティ、プレイヤーに焦点を当てる必要があります。次に、なぜ他のことに過度に注意しない方がいいのかを説明します。
サーバーコアの選択#
現在、市場には次のような Java サーバーコアがあります。
タイプ | 名前 | 適用範囲 |
---|---|---|
バニラ | Vanilla | Minecraft 公式サーバーコア、プラグインやモッドをロードできません |
プラグインのみ | Bukkit、Spigot、Paper、PurPur、Pufferfish、Folia | プラグインのみをロードできるサーバーコア、モッドをロードできません |
モッドのみ | Forge、Fabric、SpongeForge | モッドのみをロードできるサーバーコア、プラグインをロードできません |
ミックス | CatServer、Mohist、Banner、Arclight | プラグインとモッドの両方を同時にロードできるサーバーコア |
その中で最も議論の多いトピックは、「Folia を使うべきか?」です。この質問は、Folia がマルチスレッドで有名であることに触発されているようですが、Folia の公式ウェブサイトのサーバーコアの位置づけを再度読んでみましょう。
Foliaは、シングルスレッドで実行されるMinecraftサーバーの持続的なボトルネックに対処するために設計されています。それはPaperの完全な代替品ではありません。
---------
Foliaは、シングルスレッドで実行されるMinecraftサーバーの持続的なボトルネックに対処するために設計されています。それはPaperの完全な代替品ではありません。
この文をじっくり考えてみると、本当に Folia が必要なのかと思いませんか?「それは Paper の完全な代替品ではありません。」という短い文は、ゲームの体験、プラグインの互換性、安定性など、Paper サーバーコアとは大きく異なることを指摘しています。また、Folia は多くのオリジナルの機能を破壊してしまいます。本当に究極のパフォーマンスのためにこれらすべてを犠牲にする覚悟がありますか?
さらに、Folia の公式が推奨する設定を見てみましょう。
What hardware will Folia run best on?
Ideally, at least 16 cores (not threads).
---------
Foliaはどのようなハードウェアで最も良く動作しますか?
理想的には、少なくとも16コア(スレッドではありません)が必要です。
では、あなたのサーバーのハードウェア構成は本当に推奨された構成に達していますか?推奨された構成よりも低い状態でも、パフォーマンスが従来の Paper サーバーコアよりも優れていることをどのように保証しますか?
JDK の選択#
「JDK(Java Development Kit)は、開発者が使用するためのキットで、JDK には JRE(Java Runtime Environment)が含まれており、JVM(Java Virtual Machine)は JRE の一部です。すべての Java プログラムは JVM 上で実行されます。」
現在、Minecraft サーバーでよく使われる JDK のバージョンには、OpenJDK、Azul Zulu、GraalVM、Oracle JDK などがあります。
その中で、最も議論の多い OpenJDK と Azul Zulu の 2 つのバージョンを例にテストを行いました。テストスクリプトは以下の通りです。
クリックしてプレビュー
#! /bin/bash
JVM_OPENJDK=openjdk-17.0.2
JVM_ZULU=zulu17.34.19-ca-jdk17.0.3-linux_x64
sudo rm -rf /home/server/jdks/test/logs*
for JVM_NAME in $JVM_OPENJDK $JVM_TEMURIN $JVM_SEMERU $JVM_ZULU $JVM_ZING; do
echo '========================================'
echo "Start testing $JVM_NAME"
echo '========================================'
sudo rm -rf /home/server/jdks/test/world
mkdir logs
sudo nice -n -20 /home/server/jdks/$JVM_NAME/bin/java \
-Xmx6G -Xms6G -Xlog:gc:logs/gc.log -Xlog:gc* \
-jar server.jar nogui | tee logs/full.log
chmod 777 -R /home/server/jdks/test/logs
mv -v /home/server/jdks/test/logs /home/server/jdks/test/logs-$JVM_NAME
echo '========================================'
echo "Finish testing $JVM_NAME"
echo '========================================'
done
テスト結果は以下の通りです。
JDK | Chunky の所要時間 | 平均停止時間 /ms | 平均 GC 間隔 /s |
---|---|---|---|
OpenJDK | 9'01'' | 50.6 | 8 |
Azul Zulu | 9'15'' | 53.4 | 7 |
明らかに、最も議論の多い 2 つのバージョンでも、最終的なテスト結果はほとんど変わりません。実際の使用や体験では、その違いを感じるのは難しいでしょう。
結論#
以上から、サーバーコアや JDK の選択など、このような問題に過度に注意する必要はありません。代わりに、より多くの時間をゲームコンテンツの充実と最適化に費やすべきです。なぜなら、プレイヤーが本当に関心を持っているのは、ゲームの楽しさと体験であり、あなたがどの技術的な解決策を選んだかではありません。あなたのサーバーのコンテンツ構築により多くの時間を費やし、プレイヤーがより多くの楽しみと思い出を得られるようにしてください。
この記事はMix Spaceから xLog に同期されました。
元のリンクはhttps://blog.rescueme.life/posts/develop/donot-pay-too-much-attention-to-server-core-and-JDKです。